Imports System.IO Imports Xfinium.Pdf Imports Xfinium.Pdf.Graphics Imports Xfinium.Pdf.Portfolios Imports Xfinium.Pdf.Core.Cos Namespace Xfinium.Pdf.Samples ''' <summary> ''' Portfolios sample. ''' </summary> Public Class Portfolios ''' <summary> ''' Main method for running the sample. ''' </summary> ''' <param name="imageStream"></param> ''' <param name="pdfStream"></param> ''' <param name="csStream"></param> ''' <param name="vbStream"></param> Public Shared Function Run(imageStream As Stream, pdfStream As Stream, csStream As Stream, vbStream As Stream) As SampleOutputInfo() Dim portfolio As New PdfPortfolio() ' Build the structure that describes how to files and folders in the portfolio are presented to the user. Dim portfolioAttributeDefinitions As New PdfPortfolioAttributeDefinitions() Dim nameAttribute As New PdfPortfolioAttributeDefinition() nameAttribute.Name = "Name" nameAttribute.Type = PdfPortfolioAttributeDefinitionType.[String] portfolioAttributeDefinitions("name") = nameAttribute Dim typeAttribute As New PdfPortfolioAttributeDefinition() typeAttribute.Name = "Type" typeAttribute.Type = PdfPortfolioAttributeDefinitionType.[String] portfolioAttributeDefinitions("type") = typeAttribute portfolio.AttributeDefinitions = portfolioAttributeDefinitions ' Setup the folders structure Dim root As New PdfPortfolioFolder() root.Name = "All files" root.PortfolioAttributes = New PdfPortfolioItemAttributes() root.PortfolioAttributes("name") = New PdfCosString("All files") Dim imagesFolder As New PdfPortfolioFolder() imagesFolder.Name = "Images" imagesFolder.PortfolioAttributes = New PdfPortfolioItemAttributes() imagesFolder.PortfolioAttributes("name") = New PdfCosString("Images (1)") root.Folders.Add(imagesFolder) Dim pdfFolder As New PdfPortfolioFolder() pdfFolder.Name = "PDFs" pdfFolder.PortfolioAttributes = New PdfPortfolioItemAttributes() pdfFolder.PortfolioAttributes("name") = New PdfCosString("PDFs (1)") root.Folders.Add(pdfFolder) Dim htmlFolder As New PdfPortfolioFolder() htmlFolder.Name = "HTML" htmlFolder.PortfolioAttributes = New PdfPortfolioItemAttributes() htmlFolder.PortfolioAttributes("name") = New PdfCosString("HTML (2)") root.Folders.Add(htmlFolder) portfolio.Folders.Add(root) ' Setup the portfolio items Dim imageFile As New PdfPortfolioItem() imageFile.Folder = imagesFolder Dim data As Byte() = New Byte(imageStream.Length - 1) {} imageStream.Read(data, 0, data.Length) imageFile.Payload = data imageFile.FileName = "image.jpg" imageFile.Attributes = New PdfPortfolioItemAttributes() imageFile.Attributes("name") = New PdfCosString("image.jpg") imageFile.Attributes("type") = New PdfCosString("JPEG image") portfolio.Items.Add(imageFile) Dim pdfFile As New PdfPortfolioItem() pdfFile.Folder = pdfFolder data = New Byte(pdfStream.Length - 1) {} pdfStream.Read(data, 0, data.Length) pdfFile.Payload = data pdfFile.FileName = "content.pdf" pdfFile.Attributes = New PdfPortfolioItemAttributes() pdfFile.Attributes("name") = New PdfCosString("content.pdf") pdfFile.Attributes("type") = New PdfCosString("PDF file") portfolio.Items.Add(pdfFile) Dim csFile As New PdfPortfolioItem() csFile.Folder = htmlFolder data = New Byte(csStream.Length - 1) {} csStream.Read(data, 0, data.Length) csFile.Payload = data csFile.FileName = "portfolios.cs.html" csFile.Attributes = New PdfPortfolioItemAttributes() csFile.Attributes("name") = New PdfCosString("portfolios.cs.html") csFile.Attributes("type") = New PdfCosString("HTML file") portfolio.Items.Add(csFile) Dim vbFile As New PdfPortfolioItem() vbFile.Folder = htmlFolder data = New Byte(vbStream.Length - 1) {} vbStream.Read(data, 0, data.Length) vbFile.Payload = data vbFile.FileName = "portfolios.vb.html" vbFile.Attributes = New PdfPortfolioItemAttributes() vbFile.Attributes("name") = New PdfCosString("portfolios.vb.html") vbFile.Attributes("type") = New PdfCosString("HTML file") portfolio.Items.Add(vbFile) portfolio.StartupDocument = pdfFile Dim output As SampleOutputInfo() = New SampleOutputInfo() {New SampleOutputInfo(portfolio, "xfinium.pdf.sample.portfolios.pdf")} Return output End Function End Class End Namespace